package top.rainf.util;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 星环
 * @date 2023/5/16 20:43:11
 * @description 用于分页辅助
 */
public class PagerUtil {
    /**
     * 根据记录数确定分页页数的省略号 字符串内容列表
     * @param numPerPage 每页多少条
     * @param curPage 当前页
     * @param totalNum 总共多少数据
     * @return 字符串列表，包括分页内各个页数
     */
    public static List<String> getPageListStr(int numPerPage, int curPage, int totalNum) {
        int pageCount = (totalNum / numPerPage) + 1;
        List<String> list = new ArrayList<>();
        //显示区域在[curPage-2,curPage+2]的5条
        //如果pageNum >3,就不会显示1，要加上返回首页
        if(curPage > 3){
            list.add("1");
        }
        //如果pageNum > 4，显示的最左边到1之间有省略的页，加上省略号
        if(curPage > 4){
            list.add("...");
        }
        //最小到1，最大到pagecount，区间最长为5，加入这些页
        for (int i = Math.max(1,curPage - 2); i <= Math.min(curPage + 2,pageCount); i++) {
            list.add(String.valueOf(i));
        }
        //同左
        if(curPage < pageCount-3){
            list.add("...");
        }
        if (curPage < pageCount-2){
            list.add(String.valueOf(pageCount));
        }
        return list;
    }
}
